# 定义一个人类


class Person:
    # 在类的代码块中我们可以定义变量和函数
    # 在类中我们所定义的变量，将成为所有实例的公共属性
    # 所有实例都可以访问这些变量
    name = 'swk'  # 公共属性，所有实例都可以访问

    # 在类中也可以定义函数，类中定义的函数，我们称为方法
    # 这些方法可以通过该类的所有实例访问
    def say_hello(self):
        # 方法每次被调用，解析器都会自动传递第一个实参
        # 第一个参数就是调用方法的对象本身
        #   如果是p1调用，则第一个参数就是p1对象
        #   如果是p2调用，则第一个参数就是p2对象
        # 一般我们都会讲这个参数命名为self
        # say_hello()这个方法，可以显示如下格式：
        # 你好，我是xxx
        print("你好，我是{}".format(self.name))


# 创建Person的实例
p1 = Person()
p2 = Person()

# print(p1.name)
# print(p2.name)

# 调用方法，对象.方法名()
# 方法调用和函数调用的区别
# 如果是函数调用，则调用时传几个参数，就会有几个参数
# 但是如果是方法调用，默认传递一个参数，所以方法中至少要传一个形参

# 修改p1的name属性
p1.name = 'zbj'
p2.name = 'shs'

p1.say_hello()
p2.say_hello()

print(p1.name)
print(p2.name)
